From bc774b4f6cd4743e74830204915ebe0c07b3d9a4 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Thu, 9 Jun 2005 16:33:41 +0000 Subject: [PATCH] bitkeeper revision 1.1702 (42a86f65gBB_DT3imKRA_tkGBTiKQA) Fix io_apic -> i8259 irq handling transition. Signed-off-by: Keir Fraser --- xen/arch/x86/i8259.c | 7 ------- xen/arch/x86/io_apic.c | 6 ++++-- xen/arch/x86/irq.c | 36 ------------------------------------ xen/include/asm-x86/irq.h | 4 ---- 4 files changed, 4 insertions(+), 49 deletions(-) diff --git a/xen/arch/x86/i8259.c b/xen/arch/x86/i8259.c index 17128adc35..7fc9340d78 100644 --- a/xen/arch/x86/i8259.c +++ b/xen/arch/x86/i8259.c @@ -204,13 +204,6 @@ int i8259A_irq_pending(unsigned int irq) return ret; } -void make_8259A_irq(unsigned int irq) -{ - disable_irq_nosync(irq); - io_apic_irqs &= ~(1< #include +#define make_8259A_irq(irq) (io_apic_irqs &= ~(1<<(irq))) + int (*ioapic_renumber_irq)(int ioapic, int irq); atomic_t irq_mis_count; @@ -1278,8 +1280,8 @@ static struct hw_interrupt_type ioapic_level_type = { static inline void init_IO_APIC_traps(void) { int irq; - for (irq = 0; irq < NR_IRQS ; irq++) - if (IO_APIC_IRQ(irq) && !IO_APIC_VECTOR(irq) && (irq < 16)) + for (irq = 0; irq < 16 ; irq++) + if (IO_APIC_IRQ(irq) && !IO_APIC_VECTOR(irq)) make_8259A_irq(irq); } diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 7307e9bead..92b51f7d6e 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -44,42 +44,6 @@ struct hw_interrupt_type no_irq_type = { atomic_t irq_err_count; -inline void disable_irq_nosync(unsigned int irq) -{ - unsigned int vector = irq_to_vector(irq); - irq_desc_t *desc = &irq_desc[vector]; - unsigned long flags; - - spin_lock_irqsave(&desc->lock, flags); - - if ( desc->depth++ == 0 ) - { - desc->status |= IRQ_DISABLED; - desc->handler->disable(vector); - } - - spin_unlock_irqrestore(&desc->lock, flags); -} - -void enable_irq(unsigned int irq) -{ - unsigned int vector = irq_to_vector(irq); - irq_desc_t *desc = &irq_desc[vector]; - unsigned long flags; - - spin_lock_irqsave(&desc->lock, flags); - - if ( --desc->depth == 0 ) - { - desc->status &= ~IRQ_DISABLED; - if ( (desc->status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING ) - desc->status |= IRQ_REPLAY; - desc->handler->enable(vector); - } - - spin_unlock_irqrestore(&desc->lock, flags); -} - asmlinkage void do_IRQ(struct cpu_user_regs *regs) { unsigned int vector = regs->entry_vector; diff --git a/xen/include/asm-x86/irq.h b/xen/include/asm-x86/irq.h index 8ebbeb184a..07f9d32ccf 100644 --- a/xen/include/asm-x86/irq.h +++ b/xen/include/asm-x86/irq.h @@ -18,9 +18,6 @@ (IO_APIC_IRQ(irq) ? IO_APIC_VECTOR(irq) : LEGACY_VECTOR(irq)) #define vector_to_irq(vec) (vector_irq[vec]) -extern void disable_irq_nosync(unsigned int); -extern void enable_irq(unsigned int); - extern int vector_irq[NR_VECTORS]; extern u8 irq_vector[NR_IRQ_VECTORS]; #define AUTO_ASSIGN -1 @@ -30,7 +27,6 @@ extern u8 irq_vector[NR_IRQ_VECTORS]; void disable_8259A_irq(unsigned int irq); void enable_8259A_irq(unsigned int irq); int i8259A_irq_pending(unsigned int irq); -void make_8259A_irq(unsigned int irq); void init_8259A(int aeoi); void setup_IO_APIC(void); -- 2.30.2